﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataTier;

namespace BusinessLogic.Statuses
{
    /// <summary>
    /// Выдает доступные статусы
    /// </summary>
    public class NextStatusGetter
    {

        /// <summary>
        /// Выдает список статусов, в которые можно перейти из данного
        /// </summary>
        /// <param name="status"></param>
        /// <returns></returns>
        public int[] GetNextStatuses(int status)
        {
            switch (status)
            {
                case 0: //
                    return new[] { (int)StateEnum.Project, (int)StateEnum.ExpendBillSaved, (int)StateEnum.ConsolidatedAccountSaved }; //Проект, Сохранена, Сохранен

                case (int)StateEnum.Project: //Проект
                    return new[] { (int)StateEnum.Sended };//Отправлен

                case (int)StateEnum.Sended: //Отправлен
                    return new[] { (int)StateEnum.Project, (int)StateEnum.CreatedAccount };//Проект, Сформирован счет

                case (int)StateEnum.CreatedAccount: //Сформирован счет
                    return new[] { (int)StateEnum.PartialDispatch, (int)StateEnum.FullDispatch };//Частично отгружен, Полностью отгружен

                case (int)StateEnum.PartialDispatch: //Частично отгружен
                    return new[] { (int)StateEnum.FullDispatch };//Полностью отгружен

                case (int)StateEnum.ExpendBillSaved: //Сохранена
                    return new[] { (int)StateEnum.ExpendBillExecuted, (int)StateEnum.ExpendBillSaved };//Исполнена, Сохранена

                case (int)StateEnum.ConsolidatedAccountSaved: //Сохранен
                    return new[] { (int)StateEnum.ConsolidatedAccountExecuted };//Исполнен


                default:
                    return new int[0];
            }
        }



    }
}
